package com.wanjia.estate.pojo.bank;

import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Pay {

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Header extends CommonHeader {
        public Header() {
            setBizMethod(BIZ_METHOD_BILL_PAY);
        }
    }

    @Data
    public static class Request implements Serializable {

        /**
         * 接入类型
         * 0：普通商户直连接入
         * 1：收单机构接入
         */
        private String accessType;
        /**
         * 商户代码
         * 已被批准加入银联互联网系统的商户代码
         * 固定15位长，仅支持数字和字母
         */
        private String merId;
        /**
         * 商户订单号，不能含“-”或“_”
         * 仅支持数字和字母
         */
        private String orderId;
        /**
         * 商户发送交易时间，
         * 格式：  yyyyMMddHHmmss
         */
        private String txnTime;
        /**
         * 交易金额
         * 仅支持数字。单位为币种对应的最小单位，参数值不能带小数
         */
        private String txnAmt;
        /**
         * 交易币种
         * 3位数字。币种格式必须为3位代码，默认取值：156（人民币）
         */
        private String currencyCode = "156";
        /**
         * Base64编码实体类
         *
         * @see RiskRateInfo
         */
        private String riskRateInfo;
        /**
         * 支付类型
         * <p>1- 浏览器支付(PC)</p>
         * <p>2- 浏览器支付(WAP)</p>
         * <p>3- 控件支付(APP)</p>
         * <p>4- 后台无卡</p>
         * <p>5- 后台有卡</p>
         * <p>6- 二维码被扫</p>
         */
        private String billPayType = "2";
        /**
         * Base64编码实体类
         *
         * @see RiskRateInfo
         */
        private String billDetailInfo;
        /**
         * 后台通知地址
         */
        private String backUrl;
        /**
         * 前台跳转地址
         */
        private String frontUrl;
        /**
         * 请求方保留域
         */
        private String reqReserved;
    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Response extends CommonResponse {
        /**
         * 接入类型
         * 0：普通商户直连接入
         * 1：收单机构接入
         */
        private String accessType;
        /**
         * 商户代码
         * 已被批准加入银联互联网系统的商户代码
         * 固定15位长，仅支持数字和字母
         */
        private String merId;
        /**
         * 商户订单号，不能含“-”或“_”
         * 仅支持数字和字母
         */
        private String orderId;
        /**
         * 商户发送交易时间，
         * 格式：  yyyyMMddHHmmss
         */
        private String txnTime;
        /**
         * 请求方保留域
         */
        private String reqReserved;
        /**
         * 银联受理订单号
         * 由银联返回，用于在后续类交易中唯一标识一笔交易
         * 21位定长，仅支持数字
         */
        private String tn;
        /**
         * 支付跳转地址
         * 前台浏览器类支付时使用，下单成功后由系统返回，受理侧需将持卡人浏览器重定向到该地址以引导持卡人完成支付操作
         */
        private String payUrl;
    }
}
